<html>
<head><meta charset="utf-8"><title>target tier list and license policy · t-core/licensing · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/index.html">t-core/licensing</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html">target tier list and license policy</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="203668383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668383">(Jul 13 2020 at 00:30)</a>:</h4>
<p>I'm currently working on the <a href="https://github.com/rust-lang/rfcs/pull/2803">target tier policy</a> RFC.</p>



<a name="203668399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668399">(Jul 13 2020 at 00:31)</a>:</h4>
<p>One of the things I'm looking to add is a requirement specifically discussing licensing of dependencies introduced by a new target.</p>



<a name="203668401"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668401" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668401">(Jul 13 2020 at 00:31)</a>:</h4>
<p>At first, I'd intended to add a requirement saying that a target must not require new license exceptions to be added.</p>



<a name="203668405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668405">(Jul 13 2020 at 00:31)</a>:</h4>
<p>However, I realized that there <em>are</em> targets that I think we should accept, which would potentially entail such license exceptions.</p>



<a name="203668445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668445">(Jul 13 2020 at 00:32)</a>:</h4>
<p>As an example, consider the <code>x86_64-linux-kernel</code> target.</p>



<a name="203668458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668458">(Jul 13 2020 at 00:32)</a>:</h4>
<p>The runtime library for that target will necessarily depend on Linux kernel internal APIs, and any binary or library built for that target will <em>necessarily</em> need to be GPLv2-compatible.</p>



<a name="203668460"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668460" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668460">(Jul 13 2020 at 00:32)</a>:</h4>
<p>And I don't think that's inherently a problem.</p>



<a name="203668462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668462">(Jul 13 2020 at 00:33)</a>:</h4>
<p>That doesn't affect people using any other target.</p>



<a name="203668519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668519">(Jul 13 2020 at 00:34)</a>:</h4>
<p>Now, the target should not introduce any dependencies that affect <em>other</em> targets or the licensing of binaries or libraries built for any other targets.</p>



<a name="203668535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203668535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203668535">(Jul 13 2020 at 00:34)</a>:</h4>
<p>But I don't think it makes sense for us to prohibit targets that inherently require linking to copyleft code, for instance.</p>



<a name="203669524"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203669524" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203669524">(Jul 13 2020 at 01:03)</a>:</h4>
<p>Hm, can we ensure somehow that code in-tree is only allowed to be under our normal licenses without some approval process? I wouldn't want us to be in a place where we can't, say, copy some function definition from sys/kernel/foo.rs to <a href="http://mutex.rs">mutex.rs</a>.</p>
<p>I'd suggest something like non-MIT/Apache code must at least be in separate files.</p>
<p>But I agree that <em>linking</em> seems quite fine.</p>



<a name="203669637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203669637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203669637">(Jul 13 2020 at 01:07)</a>:</h4>
<p>Code in-tree, yes; thanks for the clarification. I'll add that.</p>



<a name="203669695"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203669695" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203669695">(Jul 13 2020 at 01:08)</a>:</h4>
<p>(I would commonly expect substantial "runtime libraries" for such a target to be out-of-tree anyway.)</p>



<a name="203669844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203669844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203669844">(Jul 13 2020 at 01:13)</a>:</h4>
<p>How controversial would it be to say something like "New targets should not require proprietary (non-FOSS) components to link a functional binary."? I'm aware that we have targets today that wouldn't meet that requirement, and I'm not suggesting that this policy would retroactively apply to those targets, but would it be unreasonable to not allow that for <em>new</em> targets?</p>



<a name="203669897"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203669897" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203669897">(Jul 13 2020 at 01:14)</a>:</h4>
<p>I expect this policy to live for a very long time, through substantial increases in Rust's popularity, and if there's any chance that a target might ever go "well, we need Rust support, so we'll have to teach lld how to link for us or something", I think that's worthwhile.</p>



<a name="203669912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203669912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203669912">(Jul 13 2020 at 01:14)</a>:</h4>
<p>(Also, it's a "should" and not a "must", so exceptions could be made.)</p>



<a name="203670063"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670063" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670063">(Jul 13 2020 at 01:18)</a>:</h4>
<p>I think that it would be best to require that a standard linker be able to do the task, but we should also accept the idea of perhaps needing a particular proprietary data blob to be passed to the linker to actually get a complete executable. That data blob would be part of a proprietary developer kit for that platform.</p>
<p>Then again, with the development of std-aware cargo maybe we won't need to support <em>as many</em> weird targets within rust's/rustup's suite, and we can just tell people to do a "cargo also builds std" compilation.</p>



<a name="203670090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670090">(Jul 13 2020 at 01:19)</a>:</h4>
<p>Can you give an example of what kind of target you have in mind that would have such a requirement?</p>



<a name="203670370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670370">(Jul 13 2020 at 01:26)</a>:</h4>
<p>Well with consoles, older ones i suppose, it's common for the copy protection to involve "the game data will start with this exact sequence of bytes, and if it doesn't CRC out to the right value the game is 'corrupted' and the device refuses to continue".</p>



<a name="203670390"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670390" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670390">(Jul 13 2020 at 01:27)</a>:</h4>
<p>If you literally mean "CRC" then there's an obvious solution to that that doesn't require proprietary binaries. ;)</p>



<a name="203670391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670391">(Jul 13 2020 at 01:27)</a>:</h4>
<p>But in the more general case...</p>



<a name="203670451"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670451" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670451">(Jul 13 2020 at 01:28)</a>:</h4>
<p>If you have to supply a specific binary blob at build time that the target system will check for, and that blob is copyrightable and proprietary, and there's no workaround for it, then that seems like it would limit the adoption of the target in Rust somewhat.</p>



<a name="203670461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670461">(Jul 13 2020 at 01:29)</a>:</h4>
<p>We certainly wouldn't put that blob in the Rust repository, for instance.</p>



<a name="203670469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670469">(Jul 13 2020 at 01:29)</a>:</h4>
<p>Also, if the blob can only be obtained by questionably legal means, I'd be very hesitant to have any official support for the target.</p>



<a name="203670471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670471">(Jul 13 2020 at 01:29)</a>:</h4>
<p>true. I think "the standard linker we ship with rust has to be able to do this" being a fine requirement was a majority of what i was aiming to say :3</p>



<a name="203670472"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203670472" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203670472">(Jul 13 2020 at 01:29)</a>:</h4>
<p>But in any case, the requirement is a "should", not a "must", and we can evaluate it on a target-by-target basis.</p>



<a name="203671310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/231349-t-core/licensing/topic/target%20tier%20list%20and%20license%20policy/near/203671310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/231349-t-core/licensing/topic/target.20tier.20list.20and.20license.20policy.html#203671310">(Jul 13 2020 at 01:51)</a>:</h4>
<p>I've now pushed changes to the target tier policy RFC that address legal and licensing requirements.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>